//
//  SHHomeViewController.swift
//  三期微博1
//
//  Created by TownFish on 16/7/19.
//  Copyright © 2016年 TownFish. All rights reserved.
//

import UIKit
//cell 可重用标识符
private let homeCellId = "homeCellId"

class SHHomeViewController: SHVisitorViewController {
    //全局的模型数组
    lazy var statusListViewModel: SHStatusListViewModel = SHStatusListViewModel()

    override func viewDidLoad() {
        super.viewDidLoad()
        //判断是否登录,没登录就调用赋值图片文字方法
        if !isLogin {
            visitorView?.setupVisitorViewInfo(nil, title: nil)
            //没登录就不往下请求数据
            return
        }
        setupTableViewInfo()
        getHomeData()
    }
    //设置tableView
    func setupTableViewInfo() {
        //设置数据源代理
        tableView.dataSource = self
        //注册cell
        tableView.registerClass(SHStautsCell.self, forCellReuseIdentifier: homeCellId)
        //设置tableViewCell高度
        //tableView.rowHeight = 200
        //设置tableView的cell的预估行高(预估行高越接近真实cell高度越好)
        tableView.estimatedRowHeight = 200
    }
}
//MARK: - UITableViewDataSource
extension SHHomeViewController:UITableViewDataSource {
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//        return statusList.count
        return statusListViewModel.statusList.count
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(homeCellId, forIndexPath: indexPath) as! SHStautsCell
        //给cell赋值
        cell.statusViewModel = statusListViewModel.statusList[indexPath.row]
        
//        cell.textLabel?.text = statusListViewModel.statusList[indexPath.row].status?.user?.name
        
//        //设置随机颜色
//        cell.backgroundColor = RandomColor()
//        cell.textLabel?.text = statusList[indexPath.row].text
        return cell
    }
}

//MARK: - 请求微博数据
extension SHHomeViewController {
    //请求首页数据
    func getHomeData() {
        statusListViewModel.loadHomeData { (isSuc) -> () in
            if !isSuc {
                print("请求数据失败")
                return
            }
            self.tableView.reloadData()
        }
        
        
        

//下面的代码被抽取封装到上面了
        
//        //请求首页数据
//        SHNetworkTools.sharedTools.homeLoadData({ (response) -> () in
//                print("请求成功:\(response)")
//                //判断他是否为nil 而且是否可以转成数组(如果不符合就return)
//                guard let res = response?["statuses"] as?[[String: AnyObject]] else {
//                    return
//                }
//                //定义一个临时可变数组
//                var tempArray:[SHStatus] = [SHStatus]()
//                //遍历数组
//                for dic in res {
//                    //创建一个模型
//                    let status = SHStatus(dict: dic)
//                    //添加模型
//                    tempArray.append(status)
//                    
//                }
//                //赋值
//                self.statusList = tempArray
//                //刷新UI
//                self.tableView.reloadData()
////                print(self?.statusList.count)
//            
//            }) { (error) -> () in
//                print("请求失败:\(error)")
//        }
        
        
    }
}


//下面的代码通过网络单利方法封装成上面的效果 
extension SHHomeViewController {
        func test() {
//            //请求urlSting
//            let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
//            //请求参数
//            let params = ["access_token": SHUserAccountViewModel.sharedTools.accessToken!]
//            //发送请求
//            SHNetworkTools.shareTools.request(SHNetworkToolsType.GET, urlString:urlString, parameters: params, success: {[weak self](response) -> () in
//                print("请求成功:\(response)")
//                //判断他是否为nil 而且是否可以转成数组(如果不符合就return)
//                guard let res = response?["statuses"] as?[[String: AnyObject]] else {
//                    return
//                }
//                //定义一个临时可变数组
//                var tempArray:[SHStatus] = [SHStatus]()
//                //遍历数组
//                for dic in res {
//                    //创建一个模型
//                    let status = SHStatus(dict: dic)
//                    //添加模型
//                    tempArray.append(status)
//                    
//                }
//                //赋值
//                self?.statusList = tempArray
//                //刷新UI
//                self?.tableView.reloadData()
//                print(self?.statusList.count)
//                
//                }) { (error) -> () in
//                    print("请求失败:\(error)")
//            }

        }
        
}